/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BD;

import BE.Log;
import BE.Usuario;
import java.util.List;


import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Query;

/**
 *
 * @author Maestria
 */
public class LogBD {

    private Session session = null;
    Transaction tx = null;

    public LogBD() {

        //this.session = HibernateUtil.getSessionFactory().getCurrentSession();
    }

    public boolean insertarLog(Log objLogBE) {
        Transaction tx = null;
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            tx = session.beginTransaction();
            //session.evict(objLogBE);
            Usuario objUsuarioX = (Usuario) session.get(Usuario.class, new Integer(objLogBE.getUsuario().getSrlIdpersona()));
            objLogBE.setUsuario(objUsuarioX);
            session.save(objLogBE);
            tx.commit();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }


    }

    public List<Log> buscarLog(Log objLog) {

        List<Log> lista = null;

        try {
            session = HibernateUtil.getSessionFactory().openSession();
            tx = session.beginTransaction();
//            Criteria crit = session.createCriteria(tipovendedor.class);
            String hql = " from Log as l " +
                    " where upper(l.cvTitulo) like upper(:strTitulo) " +
                    " and upper(l.cvDescripcion) like upper(:strDescripcion) " +
                    " and upper(l.cvIp) like upper(:strIp) ";

            //0 representa QUE NO han escrito nada en este campo... además es el valor por defecto del mismo
            if (objLog.getSrlIdlog() != 0) {
                hql += " and t.srlIdlog = :intCodigoLog ";
            }
            Query query = session.createQuery(hql);

            //indico que si algun campo es NULL, lo reemplaze por '%%' para el LIKE (recordar SQL)
            String strTitulo = ((objLog.getCvTitulo() == null) ? "%%" : "%" + objLog.getCvTitulo() + "%");
            query.setString("strTitulo", strTitulo);
            String strDescripcion = ((objLog.getCvDescripcion() == null) ? "%%" : "%" + objLog.getCvDescripcion() + "%");
            query.setString("strDescripcion", strDescripcion);
            String strIp = ((objLog.getCvIp() == null) ? "%%" : "%" + objLog.getCvIp() + "%");
            query.setString("strIp", strIp);
            int intCodigoLog = objLog.getSrlIdlog();
            if (intCodigoLog != 0) {  //si el usuario lleno este filtro se agregará como filtro al query
                query.setInteger("intCodigoLog", intCodigoLog);
            }
                session.flush();
                lista = query.list();
                tx.commit();
            } catch  (Exception e) {
            e.printStackTrace();
            if (tx != null && tx.isActive()) {
                tx.rollback();
            }
        }
        return lista;
    }
}
